package controller;

import dao.ListaJpaController;
import dao.QuestaoListaJpaController;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import dao.exceptions.NonexistentEntityException;
import java.util.ArrayList;
import model.Lista;
import model.Questao;
import model.QuestaoLista;
import model.QuestaoProfessor;
import pagecontroller.JsfUtil;

/**
 *
 * @author Edilson Fernandes da Costa
 * @version 1.0
 */
public class QuestaoListaController extends Controller{

    public QuestaoListaController() {
        if (JsfUtil.getObjectFromSession("QuestaoListaJpaController") == null) {
            jpaController = new QuestaoListaJpaController();
        } else {
            jpaController = (QuestaoListaJpaController) JsfUtil.getObjectFromSession("QuestaoListaJpaController");
        }
    }
    private QuestaoLista questaoLista = null;
    private QuestaoLista questaoListaAux = null;
    private QuestaoListaJpaController jpaController = null;
    private List<QuestaoLista> questaoListas = null;
    Questao questaoAux = null;


   public void persiste() {
        if (questaoLista.getId() == null) {
            create();
        } else {
            update();
        }
    }

    public String update() {
        try {
            jpaController.edit(this.questaoLista);
            questaoListaAux = questaoLista;
            this.questaoLista = null;
            JsfUtil.addSuccessMessage("QuestaoLista Atualizado com Sucesso");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(QuestaoListaController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(QuestaoListaController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return "refreshPage";
    }

    public String create() {
        try {
            
            QuestaoProfessorController qpc = (QuestaoProfessorController) JsfUtil.getObjectFromSession("QuestaoProfessorController");
            if(qpc == null){
                qpc = new QuestaoProfessorController();
            }
            
//           Questao questaoAux = (Questao) JsfUtil.getObjectFromRequestParameter("questaoTemp");
                        
            QuestaoProfessor qp = qpc.getQuestaoProfessor(getQuestaoAux());
            questaoLista.setQuestaoProfessor(qp);
            jpaController.create(questaoLista);
            questaoListaAux = questaoLista;
            questaoLista = null;
            JsfUtil.addSuccessMessage("QuestaoLista cadastrado com sucesso.");
            getPageManager().setModalVisible(false);
        } catch (Exception e) {
            JsfUtil.ensureAddErrorMessage(e, "Ocorreu um erro na percistencia dos dados.");
            return null;
        }
        return "refreshPage";
    }

    public String edit() {
        QuestaoLista questaoListaTemp = (QuestaoLista) JsfUtil.getObjectFromRequestParameter("questaoLista");
        this.questaoLista = questaoListaTemp;
        return "refreshPage";
    }

    public String destroy() {
        QuestaoLista questaoListaTemp = (QuestaoLista) JsfUtil.getObjectFromRequestParameter("questaoLista");
        try {
            jpaController.destroy(questaoListaTemp.getId());
            JsfUtil.addSuccessMessage("QuestaoLista removido com sucesso.");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(QuestaoListaController.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "refreshPage";
    }


    public QuestaoLista getQuestaoLista() {
        if (questaoLista == null) {
            questaoLista = new QuestaoLista();
        }
        return questaoLista;
    }

    public List<QuestaoLista> getQuestaoListas(){
        this.questaoListas = jpaController.findQuestaoListaEntities();
        return this.questaoListas;
    }

    public List<QuestaoLista> getQuestaoListas(Lista lista){
        this.questaoListas = jpaController.findQuestaoLista(lista);
        return this.questaoListas;
    }

    
    public QuestaoListaJpaController getJpaController() {
        return jpaController;
    }

    public QuestaoLista getQuestaoListaAux() {
        return questaoListaAux;
    }
    
    public List<Lista> getListasUsuarioLogado(){
        
        ListaJpaController listaJpaController = (ListaJpaController) JsfUtil.getObjectFromSession("ListaJpaController");
        if(listaJpaController == null){
            listaJpaController = new ListaJpaController();
        }
        try {
            return listaJpaController.findLista(getUsuarioLogado().getProfessor());
        } catch (Exception ex) {
            return new ArrayList<Lista>();
        }
  
    }
    
    public String setPageQuestaoListaCad(){
        questaoAux = (Questao) JsfUtil.getObjectFromRequestParameter("questaoTemp");
        JsfUtil.setObjectFromSession("questaoTemp", questaoAux);
        getPageManager().setModalQuestaoListaCad();
        return "refreshPage";
    }

    public Questao getQuestaoAux() {
        if(questaoAux == null){
            questaoAux = (Questao) JsfUtil.getObjectFromSession("questaoTemp");
        }
        if(questaoAux == null){
            questaoAux = new Questao();
        }
        return questaoAux;
    }

    public void setQuestaoAux(Questao questaoAux) {
        this.questaoAux = questaoAux;
    }


    
    
}
